home *** CD-ROM | disk | FTP | other *** search
/ Meeting Pearls 2 / Meeting Pearls Vol. II (1995)(GTI - Schatztruhe)[!].iso / Pearls / dev / GUI / BGUI / demos / bguidemo.c < prev    next >
C/C++ Source or Header  |  1994-10-05  |  64KB  |  1,118 lines

  1. ;/* Execute me to compile with DICE V3.0
  2. dcc bguidemo.c -proto -mi -ms -mRR -lbgui
  3. quit
  4. */
  5. /*
  6. **         $RCSfile: bguidemo.c,v $
  7. **      Description: A small demonstration.
  8. **        Copyright: (C) Copyright 1994 Jaba Development.
  9. **                   (C) Copyright 1994 Jan van den Baard.
  10. **                   All Rights Reserved.
  11. **
  12. **          $Author: jaba $
  13. **        $Revision: 1.12 $
  14. **            $Date: 1994/10/02 14:57:30 $
  15. **/
  16.  
  17. #include <exec/types.h>
  18. #include <exec/memory.h>
  19. #include <libraries/gadtools.h>
  20. #include <dos/dos.h>
  21. #include <workbench/workbench.h>
  22. #include <workbench/startup.h>
  23. #include <libraries/bgui.h>
  24. #include <libraries/bgui_macros.h>
  25.  
  26. #include <clib/alib_protos.h>
  27.  
  28. #include <proto/exec.h>
  29. #include <proto/intuition.h>
  30. #include <proto/dos.h>
  31. #include <proto/bgui.h>
  32.  
  33. #include <stdio.h>
  34.  
  35. /*
  36. **      Online-Help texts.
  37. **/
  38. UBYTE           *MainHelp               = ISEQ_C "BGUI is a shared library which offers a set of\n"
  39.                                           "BOOPSI classes to allow for easy and flexible GUI creation.\n\n"
  40.                                           "The main window is also an AppWindow. Drop some icons\n"
  41.                                           "on it and see what happens.\n\n"
  42.                                           "All other windows in this demo also have online-help. To access\n"
  43.                                           "this help press the " ISEQ_B "HELP" ISEQ_N " key while the window is active.";
  44.  
  45. UBYTE           *GroupsHelp             = ISEQ_C "The BGUI layout engine is encapsulated in the groupclass.\n"
  46.                                           "The groupclass will layout all of it's members into a specific area.\n"
  47.                                           "You can pass layout specific attributes to all group members\n"
  48.                                           "which allows for flexible and powerful layout capabilities.";
  49.  
  50. UBYTE           *NotifHelp              = ISEQ_C "Notification can be used to let an object keep one or\n"
  51.                                           "more other objects informed about it's status. BGUI offers several\n"
  52.                                           "kinds of notification of which two (conditional and map-list) are\n"
  53.                                           "shown in this demonstration.";
  54.  
  55. UBYTE           *InfoHelp               = ISEQ_C "Not much more can be said about the BGUI infoclass than\n"
  56.                                           "is said in this window. Except maybe that this text is shown in an\n"
  57.                                           "infoclass object as are all body texts from a BGUI requester.";
  58.  
  59. UBYTE           *ImageHelp              = ISEQ_C "This window shows you the built-in images that BGUI has\n"
  60.                                           "to offer. Ofcourse these images are all scalable and it is possible\n"
  61.                                           "to create your own, scalable, imagery with the BGUI vectorclass.";
  62.  
  63. UBYTE           *BackfillHelp           = ISEQ_C "Here you see the built-in backfill patterns BGUI supports.\n"
  64.                                           "These backfill patterns can all be used in groups and frames. The frameclass\n"
  65.                                           "also offers you the possibility to add hooks for custom backfills and\n"
  66.                                           "frame rendering.";
  67.  
  68. UBYTE           *PagesHelp              = ISEQ_C "The pageclass allows you to setup a set of pages containing\n"
  69.                                           "BGUI gadgets or groups. This will give you the oppertunity to\n"
  70.                                           "have several set's of gadgets in a single window.";
  71.  
  72.  
  73. /*
  74. **      Window objects.
  75. **/
  76. Object          *WA_Main  = NULL, *WA_Groups = NULL, *WA_Notif = NULL;
  77. Object          *WA_Info  = NULL, *WA_Image  = NULL, *WA_BFill = NULL;
  78. Object          *WA_Pages = NULL;
  79.  
  80. /*
  81. **      Gadget objects from the main window.
  82. **/
  83. Object          *BT_Groups,   *BT_Notif,    *BT_Quit;
  84. Object          *BT_Info,     *BT_Images,   *BT_BFill;
  85. Object          *BT_Pages,    *BT_IconDone, *BT_IconQuit;
  86. Object          *LV_IconList, *PG_Pager;
  87.  
  88. /*
  89. **      Menus & gadget ID's.
  90. **/
  91. #define ID_ABOUT                1L
  92. #define ID_QUIT                 2L
  93.  
  94. /*
  95. **      A small menu strip.
  96. **/
  97. struct NewMenu MainMenus[] = {
  98.         Title( "Project" ),
  99.                 Item( "About...", "?", ID_ABOUT ),
  100.                 ItemBar,
  101.                 Item( "Quit",     "Q", ID_QUIT  ),
  102.         End
  103. };
  104.  
  105. /*
  106. **      Put up a simple requester.
  107. **/
  108. ULONG Req( struct Window *win, UBYTE *gadgets, UBYTE *body, ... )
  109. {
  110.         struct bguiRequest      req = { NULL };
  111.  
  112.         req.br_GadgetFormat     = gadgets;
  113.         req.br_TextFormat       = body;
  114.         req.br_Flags            = BREQF_CENTERWINDOW|BREQF_XEN_BUTTONS;
  115.  
  116.         return( BGUI_RequestA( win, &req, ( ULONG * )( &body + 1 )));
  117. }
  118.  
  119. /*
  120. **      Main window button ID's.
  121. **/
  122. #define ID_MAIN_GROUPS          3L
  123. #define ID_MAIN_NOTIF           4L
  124. #define ID_MAIN_INFO            5L
  125. #define ID_MAIN_IMAGE           6L
  126. #define ID_MAIN_BFILL           7L
  127. #define ID_MAIN_PAGES           8L
  128. #define ID_MAIN_ICON_CONT       9L
  129.  
  130. /*
  131. **      Open main window.
  132. **/
  133. struct Window *OpenMainWindow( ULONG *sigmask, ULONG *appmask )
  134. {
  135.         struct Window           *window = NULL;
  136.  
  137.         WA_Main = WindowObject,
  138.                 WINDOW_Title,           "BGUIDemo - (C) Jaba Development.",
  139.                 WINDOW_ScreenTitle,     "BGUIDemo - (C) Copyright 1993-1994 Jaba Development.",
  140.                 WINDOW_MenuStrip,       MainMenus,
  141.                 WINDOW_SmartRefresh,    TRUE,
  142.                 WINDOW_AppWindow,       TRUE,
  143.                 WINDOW_SizeGadget,      FALSE,
  144.                 WINDOW_HelpText,        MainHelp,
  145.                 WINDOW_MasterGroup,
  146.                         VGroupObject, HOffset( 4 ), VOffset( 4 ), Spacing( 4 ), GROUP_BackFill, SHINE_RASTER,
  147.                                 StartMember,
  148.                                         PG_Pager = PageObject,
  149.                                                 /*
  150.                                                 **      Main page.
  151.                                                 **/
  152.                                                 PageMember,
  153.                                                         VGroupObject, Spacing( 4 ), GROUP_BackFill, SHINE_RASTER,
  154.                                                                 StartMember,
  155.                                                                         InfoObject,
  156.                                                                                 INFO_TextFormat,        ISEQ_C
  157.                                                                                                         "BGUIDemo\n"
  158.                                                                                                         ISEQ_HIGHLIGHT
  159.                                                                                                         ISEQ_B
  160.                                                                                                         "(C) Copyright 1993-1994 Jaba Development"
  161.                                                                                                         ISEQ_TEXT
  162.                                                                                                         ISEQ_N
  163.                                                                                                         "\n\n"
  164.                                                                                                         "Press the HELP key for more info.",
  165.                                                                                 INFO_FixTextWidth,      TRUE,
  166.                                                                                 INFO_MinLines,          4,
  167.                                                                                 INFO_HorizOffset,       13,
  168.                                                                                 FRM_Type,               FRTYPE_NEXT,
  169.                                                                         EndObject,
  170.                                                                 EndMember,
  171.                                                                 StartMember,
  172.                                                                         HGroupObject, Spacing( 4 ),
  173.                                                                                 StartMember,
  174.                                                                                         VGroupObject, Spacing( 4 ),
  175.                                                                                                 StartMember, BT_Groups = XenKeyButton( "_Groups",       ID_MAIN_GROUPS ), EndMember,
  176.                                                                                                 StartMember, BT_Notif  = XenKeyButton( "_Notification", ID_MAIN_NOTIF  ), EndMember,
  177.                                                                                                 VarSpace( DEFAULT_WEIGHT ),
  178.                                                                                         EndObject,
  179.                                                                                 EndMember,
  180.                                                                                 StartMember,
  181.                                                                                         VGroupObject, Spacing( 4 ),
  182.                                                                                                 StartMember, BT_Images = XenKeyButton( "_Images",       ID_MAIN_IMAGE  ), EndMember,
  183.                                                                                                 StartMember, BT_BFill  = XenKeyButton( "_BackFill",     ID_MAIN_BFILL  ), EndMember,
  184.                                                                                                 StartMember, BT_Quit   = XenKeyButton( "_Quit",         ID_QUIT        ), EndMember,
  185.                                                                                         EndObject,
  186.                                                                                 EndMember,
  187.                                                                                 StartMember,
  188.                                                                                         VGroupObject, Spacing( 4 ),
  189.                                                                                                 StartMember, BT_Pages  = XenKeyButton( "_Pages",        ID_MAIN_PAGES  ), EndMember,
  190.                                                                                                 StartMember, BT_Info   = XenKeyButton( "Info_Class",    ID_MAIN_INFO   ), EndMember,
  191.                                                                                                 VarSpace( DEFAULT_WEIGHT ),
  192.                                                                                         EndObject,
  193.                                                                                 EndMember,
  194.                                                                         EndObject, FixMinHeight,
  195.                                                                 EndMember,
  196.                                                         EndObject,
  197.                                                 /*
  198.                                                 **      Icon-drop list page.
  199.                                                 **/
  200.                                                 PageMember,
  201.                                                         VGroupObject, Spacing( 4 ), GROUP_BackFill, SHINE_RASTER,
  202.                                                                 StartMember,
  203.                                                                         InfoObject,
  204.                                                                                 INFO_TextFormat,        ISEQ_C
  205.                                                                                                         "The following icons where dropped\n"
  206.                                                                                                         "in the window.",
  207.                                                                                 INFO_FixTextWidth,      TRUE,
  208.                                                                                 INFO_MinLines,          2,
  209.                                                                                 INFO_HorizOffset,       13,
  210.                                                                                 FRM_Type,               FRTYPE_BUTTON,
  211.                                                                                 FRM_Recessed,           TRUE,
  212.                                                                         EndObject, FixMinHeight,
  213.                                                                 EndMember,
  214.                                                                 StartMember,
  215.                                                                         LV_IconList = ListviewObject,
  216.                                                                                 LISTV_ReadOnly,         TRUE,
  217.                                                                         EndObject,
  218.                                                                 EndMember,
  219.                                                                 StartMember,
  220.                                                                         HGroupObject,
  221.                                                                                 StartMember, BT_IconDone = XenKeyButton( "_Continue", ID_MAIN_ICON_CONT ), EndMember,
  222.                                                                                 VarSpace( DEFAULT_WEIGHT ),
  223.                                                                                 StartMember, BT_IconQuit = XenKeyButton( "_Quit",     ID_QUIT ), EndMember,
  224.                                                                         EndObject, FixMinHeight,
  225.                                                                 EndMember,
  226.                                                         EndObject,
  227.                                         EndObject,
  228.                                 EndMember,
  229.                         EndObject,
  230.         EndObject;
  231.  
  232.         /*
  233.         **      Object created OK?
  234.         **/
  235.         if ( WA_Main ) {
  236.                 /*
  237.                 **      Add keys to the buttons.
  238.                 **/
  239.                 GadgetKey( WA_Main, BT_Groups,   "g" );
  240.                 GadgetKey( WA_Main, BT_Notif,    "n" );
  241.                 GadgetKey( WA_Main, BT_Info,     "c" );
  242.                 GadgetKey( WA_Main, BT_Images,   "i" );
  243.                 GadgetKey( WA_Main, BT_BFill,    "b" );
  244.                 GadgetKey( WA_Main, BT_Pages,    "p" );
  245.                 GadgetKey( WA_Main, BT_Quit,     "q" );
  246.                 GadgetKey( WA_Main, BT_IconDone, "c" );
  247.                 GadgetKey( WA_Main, BT_IconQuit, "q" );
  248.                 /*
  249.                 **      Open the window.
  250.                 **/
  251.                 if ( window = WindowOpen( WA_Main )) {
  252.                         /*
  253.                         **      Obtain signal masks.
  254.                         **/
  255.                         GetAttr( WINDOW_SigMask, WA_Main, sigmask );
  256.                         GetAttr( WINDOW_AppMask, WA_Main, appmask );
  257.                 }
  258.         }
  259.  
  260.         return( window );
  261. }
  262.  
  263. /*
  264. **      Macros for the group objects. GObj() creates
  265. **      a simple infoclass object with some text in
  266. **      it. TObj() creates a simple groupclass object
  267. **      with a button frame.
  268. **/
  269. #define GObj(t)\
  270.         InfoObject,\
  271.                 INFO_TextFormat,        t,\
  272.                 INFO_FixTextWidth,      TRUE,\
  273.                 INFO_HorizOffset,       4,\
  274.                 INFO_VertOffset,        3,\
  275.                 ButtonFrame,\
  276.                 FRM_Flags,              FRF_RECESSED,\
  277.         EndObject
  278.  
  279. #define TObj\
  280.         HGroupObject, HOffset( 3 ), VOffset( 2 ),\
  281.                 ButtonFrame,\
  282.                 FRM_Flags,              FRF_RECESSED,\
  283.         EndObject
  284.  
  285. /*
  286. **      Open up the groups window.
  287. **/
  288. struct Window *OpenGroupsWindow( ULONG *sigmask )
  289. {
  290.         struct Window                   *window = NULL;
  291.  
  292.         /*
  293.         **      If the object has not been created
  294.         **      already we build it.
  295.         **/
  296.         if ( ! WA_Groups ) {
  297.                 WA_Groups = WindowObject,
  298.                         WINDOW_Title,           "BGUI Groups",
  299.                         WINDOW_RMBTrap,         TRUE,
  300.                         WINDOW_SmartRefresh,    TRUE,
  301.                         WINDOW_HelpText,        GroupsHelp,
  302.                         WINDOW_MasterGroup,
  303.                                 VGroupObject, HOffset( 4 ), VOffset( 4 ), Spacing( 4 ),
  304.                                         StartMember,
  305.                                                 HGroupObject, Spacing( 4 ),
  306.                                                         StartMember,
  307.                                                                 HGroupObject, NeXTFrame, FrameTitle( "Horizontal" ), HOffset( 8 ), TOffset( 4 ), BOffset( 6 ), Spacing( 4 ),
  308.                                                                         StartMember, TObj, EndMember,
  309.                                                                         StartMember, TObj, EndMember,
  310.                                                                         StartMember, TObj, EndMember,
  311.                                                                 EndObject,
  312.                                                         EndMember,
  313.                                                         StartMember,
  314.                                                                 VGroupObject, NeXTFrame, FrameTitle( "Vertical" ), HOffset( 8 ), TOffset( 4 ), BOffset( 6 ), Spacing( 4 ),
  315.                                                                         StartMember, TObj, EndMember,
  316.                                                                         StartMember, TObj, EndMember,
  317.                                                                         StartMember, TObj, EndMember,
  318.                                                                 EndObject,
  319.                                                         EndMember,
  320.                                                         StartMember,
  321.                                                                 VGroupObject, NeXTFrame, FrameTitle( "Grid" ), HOffset( 8 ), TOffset( 4 ), BOffset( 6 ), Spacing( 4 ),
  322.                                                                         StartMember,
  323.                                                                                 HGroupObject, Spacing( 4 ),
  324.                                                                                         StartMember, TObj, EndMember,
  325.                                                                                         StartMember, TObj, EndMember,
  326.                                                                                         StartMember, TObj, EndMember,
  327.                                                                                 EndObject,
  328.                                                                         EndMember,
  329.                                                                         StartMember,
  330.                                                                                 HGroupObject, Spacing( 4 ),
  331.                                                                                         StartMember, TObj, EndMember,
  332.                                                                                         StartMember, TObj, EndMember,
  333.                                                                                         StartMember, TObj, EndMember,
  334.                                                                                 EndObject,
  335.                                                                         EndMember,
  336.                                                                         StartMember,
  337.                                                                                 HGroupObject, Spacing( 4 ),
  338.                                                                                         StartMember, TObj, EndMember,
  339.                                                                                         StartMember, TObj, EndMember,
  340.                                                                                         StartMember, TObj, EndMember,
  341.                                                                                 EndObject,
  342.                                                                         EndMember,
  343.                                                                 EndObject,
  344.                                                         EndMember,
  345.                                                 EndObject,
  346.                                         EndMember,
  347.                                         StartMember,
  348.                                                 VGroupObject, Spacing( 4 ),
  349.                                                         StartMember, TitleSeperator( "Free, Fixed and Weight sizes." ), EndMember,
  350.                                                         StartMember,
  351.                                                                 HGroupObject, Spacing( 4 ),
  352.                                                                         StartMember, GObj( ISEQ_C "25Kg"  ), Weight( 25  ), EndMember,
  353.                                                                         StartMember, GObj( ISEQ_C "50Kg"  ), Weight( 50  ), EndMember,
  354.                                                                         StartMember, GObj( ISEQ_C "75Kg"  ), Weight( 75  ), EndMember,
  355.                                                                         StartMember, GObj( ISEQ_C "100Kg" ), Weight( 100 ), EndMember,
  356.                                                                 EndObject,
  357.                                                         EndMember,
  358.                                                         StartMember,
  359.                                                                 HGroupObject, Spacing( 4 ),
  360.                                                                         StartMember, GObj( ISEQ_C "Free"  ), EndMember,
  361.                                                                         StartMember, GObj( "Fixed"        ), FixMinWidth, EndMember,
  362.                                                                         StartMember, GObj( ISEQ_C "Free"  ), EndMember,
  363.                                                                         StartMember, GObj( "Fixed"        ), FixMinWidth, EndMember,
  364.                                                                 EndObject,
  365.                                                         EndMember,
  366.                                                 EndObject, FixMinHeight,
  367.                                         EndMember,
  368.                                 EndObject,
  369.                 EndObject;
  370.         }
  371.  
  372.         /*
  373.         **      Object OK?
  374.         **/
  375.         if ( WA_Groups ) {
  376.                 /*
  377.                 **      Open the window.
  378.                 **/
  379.                 if ( window = WindowOpen( WA_Groups ))
  380.                         /*
  381.                         **      Obtain signal mask.
  382.                         **/
  383.                         GetAttr( WINDOW_SigMask, WA_Groups, sigmask );
  384.         }
  385.  
  386.         return( window );
  387. }
  388.  
  389. /*
  390. **      Cycle gadget labels.
  391. **/
  392. UBYTE   *NotifLabels[] = { "Enabled-->", "Disabled-->", "Still Disabled-->", NULL };
  393.  
  394. /*
  395. **      Notification map-lists.
  396. **/
  397. ULONG   pga2sl[] = { PGA_Top,       SLIDER_Level,  TAG_END };
  398. ULONG   sl2prg[] = { SLIDER_Level,  PROGRESS_Done, TAG_END };
  399. ULONG   prg2in[] = { PROGRESS_Done, INDIC_Level,   TAG_END };
  400.  
  401. /*
  402. **      Open the notification window.
  403. **/
  404. struct Window *OpenNotifWindow( ULONG *sigmask )
  405. {
  406.         struct Window                   *window = NULL;
  407.         Object                          *c, *b, *p1, *p2, *s1, *s2, *p, *i1, *i2;
  408.  
  409.         /*
  410.         **      Not created yet? Create it now!
  411.         **/
  412.         if ( ! WA_Notif ) {
  413.                 WA_Notif = WindowObject,
  414.                         WINDOW_Title,           "BGUI notification",
  415.                         WINDOW_RMBTrap,         TRUE,
  416.                         WINDOW_SmartRefresh,    TRUE,
  417.                         WINDOW_HelpText,        NotifHelp,
  418.                         WINDOW_MasterGroup,
  419.                                 VGroupObject, HOffset( 4 ), VOffset( 4 ), Spacing( 4 ),
  420.                                         StartMember, TitleSeperator( "Conditional" ), EndMember,
  421.                                         StartMember,
  422.                                                 HGroupObject, Spacing( 4 ),
  423.                                                         StartMember, c = XenCycle( NULL, NotifLabels, 0, 0 ), EndMember,
  424.                                                         StartMember, b = XenButton( "Target", 0 ), EndMember,
  425.                                                 EndObject, FixMinHeight,
  426.                                         EndMember,
  427.                                         StartMember, TitleSeperator( "Map-List" ), EndMember,
  428.                                         StartMember,
  429.                                                 HGroupObject, Spacing( 4 ),
  430.                                                         StartMember,
  431.                                                                 VGroupObject, Spacing( 4 ),
  432.                                                                         StartMember, i1 = IndicatorFormat( 0, 100, 0, IDJ_CENTER, "%ld%%" ), FixMinHeight, EndMember,
  433.                                                                         StartMember, p1 = HorizProgress( NULL, 0, 100, 0 ), EndMember,
  434.                                                                 EndObject,
  435.                                                         EndMember,
  436.                                                         StartMember, s1 = VertSlider(   NULL, 0, 100, 0, 0 ), FixWidth( 16 ), EndMember,
  437.                                                         StartMember, p  = VertScroller( NULL, 0, 101, 1, 0 ), FixWidth( 16 ), EndMember,
  438.                                                         StartMember, s2 = VertSlider(   NULL, 0, 100, 0, 0 ), FixWidth( 16 ), EndMember,
  439.                                                         StartMember,
  440.                                                                 VGroupObject, Spacing( 4 ),
  441.                                                                         StartMember, i2 = IndicatorFormat( 0, 100, 0, IDJ_CENTER, "%ld%%" ), FixMinHeight, EndMember,
  442.                                                                         StartMember, p2 = VertProgress( NULL, 0, 100, 0 ), EndMember,
  443.                                                                 EndObject,
  444.                                                         EndMember,
  445.                                                 EndObject,
  446.                                         EndMember,
  447.                                 EndObject,
  448.                 EndObject;
  449.  
  450.                 if ( WA_Notif ) {
  451.                         /*
  452.                         **      Connect the cycle object with the button.
  453.                         **/
  454.                         AddCondit( c, b, CYC_Active, 0, GA_Disabled, FALSE, GA_Disabled, TRUE );
  455.                         /*
  456.                         **      Connect sliders, prop, progression and indicators.
  457.                         **/
  458.                         AddMap( s1, p1, sl2prg );
  459.                         AddMap( s2, p2, sl2prg );
  460.                         AddMap( p,  s1, pga2sl );
  461.                         AddMap( p,  s2, pga2sl );
  462.                         AddMap( p1, i1, prg2in );
  463.                         AddMap( p2, i2, prg2in );
  464.                 }
  465.         }
  466.  
  467.         /*
  468.         **      Object OK?
  469.         **/
  470.         if ( WA_Notif ) {
  471.                         /*
  472.                         **      Open window.
  473.                         **/
  474.                         if ( window = WindowOpen( WA_Notif ))
  475.                                 /*
  476.                                 **      Obtain signal mask.
  477.                                 **/
  478.                                 GetAttr( WINDOW_SigMask, WA_Notif, sigmask );
  479.         }
  480.  
  481.         return( window );
  482. }
  483.  
  484. /*
  485. **      Open infoclass window.
  486. **/
  487. struct Window *OpenInfoWindow( ULONG *sigmask )
  488. {
  489.         struct Window                   *window = NULL;
  490.         ULONG                            args[2];
  491.  
  492.         /*
  493.         **      Setup arguments for the
  494.         **      infoclass object.
  495.         **/
  496.         args[0] = AvailMem( MEMF_CHIP );
  497.         args[1] = AvailMem( MEMF_FAST );
  498.  
  499.         /*
  500.         **      Not created already?
  501.         **/
  502.         if ( ! WA_Info ) {
  503.                 WA_Info = WindowObject,
  504.                         WINDOW_Title,           "BGUI information class",
  505.                         WINDOW_RMBTrap,         TRUE,
  506.                         WINDOW_SmartRefresh,    TRUE,
  507.                         WINDOW_HelpText,        InfoHelp,
  508.                         WINDOW_MasterGroup,
  509.                                 VGroupObject, HOffset( 4 ), VOffset( 4 ),
  510.                                         StartMember,
  511.                                                 InfoFixed( NULL,
  512.                                                            ISEQ_C "BGUI offers the InfoClass.\n"
  513.                                                            "This class is a text display class which\n"
  514.                                                            "allows things like:\n\n"
  515.                                                            ISEQ_SHINE     "C"
  516.                                                            ISEQ_SHADOW    "o"
  517.                                                            ISEQ_FILL      "l"
  518.                                                            ISEQ_FILLTEXT  "o"
  519.                                                            ISEQ_HIGHLIGHT "r"
  520.                                                            ISEQ_TEXT      "s\n\n"
  521.                                                            ISEQ_L "Left Aligned...\n"
  522.                                                            ISEQ_R "Right Aligned...\n"
  523.                                                            ISEQ_C "Centered...\n\n"
  524.                                                            ISEQ_B "Bold...\n"   ISEQ_N
  525.                                                            ISEQ_I "Italic...\n" ISEQ_N
  526.                                                            ISEQ_U "Underlined...\n\n"
  527.                                                            ISEQ_B ISEQ_I "And combinations!\n\n"
  528.                                                            ISEQ_N "Free CHIP:" ISEQ_SHINE " %ld" ISEQ_TEXT", Free FAST:" ISEQ_SHINE " %ld\n",
  529.                                                            &args[ 0 ],
  530.                                                            17 ),
  531.                                         EndMember,
  532.                                 EndObject,
  533.                 EndObject;
  534.         }
  535.  
  536.         /*
  537.         **      Object OK?
  538.         **/
  539.         if ( WA_Info ) {
  540.                 /*
  541.                 **      Open window.
  542.                 **/
  543.                 if ( window = WindowOpen( WA_Info ))
  544.                         /*
  545.                         **      Obtain signal mask.
  546.                         **/
  547.                         GetAttr( WINDOW_SigMask, WA_Info, sigmask );
  548.         }
  549.  
  550.         return( window );
  551. }
  552.  
  553. /*
  554. **      Open images window.
  555. **/
  556. struct Window *OpenImageWindow( ULONG *sigmask )
  557. {
  558.         struct Window                   *window = NULL;
  559.  
  560.         /*
  561.         **      Not yet created?
  562.         **/
  563.         if ( ! WA_Image ) {
  564.                 WA_Image = WindowObject,
  565.                         WINDOW_Title,           "BGUI images",
  566.                         WINDOW_RMBTrap,         TRUE,
  567.                         WINDOW_SmartRefresh,    TRUE,
  568.                         WINDOW_HelpText,        ImageHelp,
  569.                         WINDOW_MasterGroup,
  570.                                 VGroupObject, HOffset( 4 ), VOffset( 4 ),
  571.                                         StartMember,
  572.                                                 HGroupObject, NeXTFrame, FrameTitle( "Fixed size" ), HOffset( 8 ), TOffset( 4 ), BOffset( 6 ), Spacing( 4 ),
  573.                                                         VarSpace( DEFAULT_WEIGHT ),
  574.                                                         StartMember, ButtonObject, VIT_BuiltIn, BUILTIN_GETPATH,     ButtonFrame, EndObject, FixWidth( GETPATH_WIDTH     ), FixHeight( GETPATH_HEIGHT     ), EndMember,
  575.                                                         StartMember, ButtonObject, VIT_BuiltIn, BUILTIN_GETFILE,     ButtonFrame, EndObject, FixWidth( GETFILE_WIDTH     ), FixHeight( GETFILE_HEIGHT     ), EndMember,
  576.                                                         StartMember, ButtonObject, VIT_BuiltIn, BUILTIN_CHECKMARK,   ButtonFrame, EndObject, FixWidth( CHECKMARK_WIDTH   ), FixHeight( CHECKMARK_HEIGHT   ), EndMember,
  577.                                                         StartMember, ButtonObject, VIT_BuiltIn, BUILTIN_POPUP,       ButtonFrame, EndObject, FixWidth( POPUP_WIDTH       ), FixHeight( POPUP_HEIGHT       ), EndMember,
  578.                                                         StartMember, ButtonObject, VIT_BuiltIn, BUILTIN_ARROW_UP,    ButtonFrame, EndObject, FixWidth( ARROW_UP_WIDTH    ), FixHeight( ARROW_UP_HEIGHT    ), EndMember,
  579.                                                         StartMember, ButtonObject, VIT_BuiltIn, BUILTIN_ARROW_DOWN,  ButtonFrame, EndObject, FixWidth( ARROW_DOWN_WIDTH  ), FixHeight( ARROW_DOWN_HEIGHT  ), EndMember,
  580.                                                         StartMember, ButtonObject, VIT_BuiltIn, BUILTIN_ARROW_LEFT,  ButtonFrame, EndObject, FixWidth( ARROW_LEFT_WIDTH  ), FixHeight( ARROW_LEFT_HEIGHT  ), EndMember,
  581.                                                         StartMember, ButtonObject, VIT_BuiltIn, BUILTIN_ARROW_RIGHT, ButtonFrame, EndObject, FixWidth( ARROW_RIGHT_WIDTH ), FixHeight( ARROW_RIGHT_HEIGHT ), EndMember,
  582.                                                         VarSpace( DEFAULT_WEIGHT ),
  583.                                                 EndObject, FixMinHeight,
  584.                                         EndMember,
  585.                                         StartMember,
  586.                                                 HGroupObject, NeXTFrame, FrameTitle( "Free size" ), HOffset( 8 ), TOffset( 4 ), BOffset( 6 ), Spacing( 4 ),
  587.                                                         StartMember, ButtonObject, VIT_BuiltIn, BUILTIN_GETPATH,     ButtonFrame, EndObject, EndMember,
  588.                                                         StartMember, ButtonObject, VIT_BuiltIn, BUILTIN_GETFILE,     ButtonFrame, EndObject, EndMember,
  589.                                                         StartMember, ButtonObject, VIT_BuiltIn, BUILTIN_CHECKMARK,   ButtonFrame, EndObject, EndMember,
  590.                                                         StartMember, ButtonObject, VIT_BuiltIn, BUILTIN_POPUP,       ButtonFrame, EndObject, EndMember,
  591.                                                         StartMember, ButtonObject, VIT_BuiltIn, BUILTIN_ARROW_UP,    ButtonFrame, EndObject, EndMember,
  592.                                                         StartMember, ButtonObject, VIT_BuiltIn, BUILTIN_ARROW_DOWN,  ButtonFrame, EndObject, EndMember,
  593.                                                         StartMember, ButtonObject, VIT_BuiltIn, BUILTIN_ARROW_LEFT,  ButtonFrame, EndObject, EndMember,
  594.                                                         StartMember, ButtonObject, VIT_BuiltIn, BUILTIN_ARROW_RIGHT, ButtonFrame, EndObject, EndMember,
  595.                                                 EndObject,
  596.                                         EndMember,
  597.                                 EndObject,
  598.                 EndObject;
  599.         }
  600.  
  601.         /*
  602.         **      Object OK?
  603.         **/
  604.         if ( WA_Image ) {
  605.                 /*
  606.                 **      Open the window.
  607.                 **/
  608.                 if ( window = WindowOpen( WA_Image ))
  609.                         /*
  610.                         **      Obtain signal mask.
  611.                         **/
  612.                         GetAttr( WINDOW_SigMask, WA_Image, sigmask );
  613.         }
  614.  
  615.         return( window );
  616. }
  617.  
  618. /*
  619. **      Open back-fill window.
  620. **/
  621. struct Window *OpenFillWindow( ULONG *sigmask )
  622. {
  623.         struct Window                   *window = NULL;
  624.  
  625.         /*
  626.         **      Not yet created?
  627.         **/
  628.         if ( ! WA_BFill ) {
  629.                 WA_BFill = WindowObject,
  630.                         WINDOW_Title,           "BGUI back fill patterns",
  631.                         WINDOW_RMBTrap,         TRUE,
  632.                         WINDOW_SmartRefresh,    TRUE,
  633.                         WINDOW_HelpText,        BackfillHelp,
  634.                         WINDOW_MasterGroup,
  635.                                 VGroupObject, HOffset( 4 ), VOffset( 4 ), Spacing( 4 ),
  636.                                         StartMember,
  637.                                                 HGroupObject, Spacing( 4 ),
  638.                                                         StartMember, InfoObject, ButtonFrame, ShineRaster,  EndObject, EndMember,
  639.                                                         StartMember, InfoObject, ButtonFrame, ShadowRaster, EndObject, EndMember,
  640.                                                 EndObject,
  641.                                         EndMember,
  642.                                         StartMember,
  643.                                                 HGroupObject, Spacing( 4 ),
  644.                                                         StartMember, InfoObject, ButtonFrame, ShineShadowRaster, EndObject, EndMember,
  645.                                                         StartMember, InfoObject, ButtonFrame, FillRaster,        EndObject, EndMember,
  646.                                                 EndObject,
  647.                                         EndMember,
  648.                                         StartMember,
  649.                                                 HGroupObject, Spacing( 4 ),
  650.                                                         StartMember, InfoObject, ButtonFrame, ShineFillRaster,  EndObject, EndMember,
  651.                                                         StartMember, InfoObject, ButtonFrame, ShadowFillRaster, EndObject, EndMember,
  652.                                                 EndObject,
  653.                                         EndMember,
  654.                                         StartMember,
  655.                                                 HGroupObject, Spacing( 4 ),
  656.                                                         StartMember, InfoObject, ButtonFrame, ShineBlock,  EndObject, EndMember,
  657.                                                         StartMember, InfoObject, ButtonFrame, ShadowBlock, EndObject, EndMember,
  658.                                                 EndObject,
  659.                                         EndMember,
  660.                                 EndObject,
  661.                 EndObject;
  662.         }
  663.  
  664.         /*
  665.         **      Object OK?
  666.         **/
  667.         if ( WA_BFill ) {
  668.                 /*
  669.                 **      Open window.
  670.                 **/
  671.                 if ( window = WindowOpen( WA_BFill ))
  672.                         /*
  673.                         **      Obtain signal mask.
  674.                         **/
  675.                         GetAttr( WINDOW_SigMask, WA_BFill, sigmask );
  676.         }
  677.  
  678.         return( window );
  679. }
  680.  
  681. /*
  682. **      Cycle and Mx labels.
  683. **/
  684. UBYTE *PageLab[] = { "Buttons", "Strings", "CheckBoxes", "Radio-Buttons", NULL };
  685. UBYTE *MxLab[]   = { "MX #1",   "MX #2",   "MX #3",      "MX #4",         NULL };
  686.  
  687. /*
  688. **      Cycle to Page map-list.
  689. **/
  690. ULONG Cyc2Page[] = { CYC_Active, PAGE_Active, TAG_END };
  691.  
  692. /*
  693. **      Open pages window.
  694. **/
  695. struct Window *OpenPagesWindow( ULONG *sigmask )
  696. {
  697.         Object                          *c, *p, *m, *s1, *s2, *s3;
  698.         struct Window                   *window = NULL;
  699.  
  700.         /*
  701.         **      Not yet created?
  702.         **/
  703.         if ( ! WA_Pages ) {
  704.                 WA_Pages = WindowObject,
  705.                         WINDOW_Title,           "BGUI pages",
  706.                         WINDOW_RMBTrap,         TRUE,
  707.                         WINDOW_SmartRefresh,    TRUE,
  708.                         WINDOW_HelpText,        PagesHelp,
  709.                         WINDOW_MasterGroup,
  710.                                 VGroupObject, HOffset( 4 ), VOffset( 4 ), Spacing( 4 ),
  711.                                         StartMember, c = XenKeyPopCycle( "_Page:", PageLab, 0, 0 ), FixMinHeight, EndMember,
  712.                                         StartMember,
  713.                                                 p = PageObject,
  714.                                                         /*
  715.                                                         **      Button page.
  716.                                                         **/
  717.                                                         PageMember,
  718.                                                                 VGroupObject, Spacing(4),
  719.                                                                         StartMember, TitleSeperator( "Buttons" ), EndMember,
  720.                                                                         VarSpace( DEFAULT_WEIGHT ),
  721.                                                                         StartMember, XenButton( "Button #1", 0 ), FixMinHeight, EndMember,
  722.                                                                         StartMember, XenButton( "Button #2", 0 ), FixMinHeight, EndMember,
  723.                                                                         StartMember, XenButton( "Button #3", 0 ), FixMinHeight, EndMember,
  724.                                                                         VarSpace( DEFAULT_WEIGHT ),
  725.                                                                 EndObject,
  726.                                                         /*
  727.                                                         **      String page.
  728.                                                         **/
  729.                                                         PageMember,
  730.                                                                 VGroupObject, Spacing(4),
  731.                                                                         StartMember, TitleSeperator( "Strings" ), EndMember,
  732.                                                                         VarSpace( DEFAULT_WEIGHT ),
  733.                                                                         StartMember, s1 = String( "String #1", "", 256, 0 ), FixMinHeight, EndMember,
  734.                                                                         StartMember, s2 = String( "String #2", "", 256, 0 ), FixMinHeight, EndMember,
  735.                                                                         StartMember, s3 = String( "String #3", "", 256, 0 ), FixMinHeight, EndMember,
  736.                                                                         VarSpace( DEFAULT_WEIGHT ),
  737.                                                                 EndObject,
  738.                                                         /*
  739.                                                         **      CheckBox page.
  740.                                                         **/
  741.                                                         PageMember,
  742.                                                                 VGroupObject, Spacing(4),
  743.                                                                         StartMember, TitleSeperator( "CheckBoxes" ), EndMember,
  744.                                                                         StartMember,
  745.                                                                                 HGroupObject, Spacing( 4 ),
  746.                                                                                         VarSpace( DEFAULT_WEIGHT ),
  747.                                                                                         StartMember,
  748.                                                                                                 VGroupObject, Spacing( 4 ),
  749.                                                                                                         VarSpace( DEFAULT_WEIGHT ),
  750.                                                                                                         StartMember, CheckBox( "CheckBox #1", FALSE, 0 ), EndMember,
  751.                                                                                                         StartMember, CheckBox( "CheckBox #2", FALSE, 0 ), EndMember,
  752.                                                                                                         StartMember, CheckBox( "CheckBox #3", FALSE, 0 ), EndMember,
  753.                                                                                                         VarSpace( DEFAULT_WEIGHT ),
  754.                                                                                                 EndObject, FixMinWidth,
  755.                                                                                         EndMember,
  756.                                                                                         VarSpace( DEFAULT_WEIGHT ),
  757.                                                                                 EndObject,
  758.                                                                         EndMember,
  759.                                                                 EndObject,
  760.                                                         /*
  761.                                                         **      Mx page.
  762.                                                         **/
  763.                                                         PageMember,
  764.                                                                 VGroupObject, Spacing(4),
  765.                                                                         StartMember, TitleSeperator( "Radio-Buttons" ), EndMember,
  766.                                                                         VarSpace( DEFAULT_WEIGHT ),
  767.                                                                         StartMember,
  768.                                                                                 HGroupObject,
  769.                                                                                         VarSpace( DEFAULT_WEIGHT ),
  770.                                                                                         StartMember, m = LeftMxKey( NULL, MxLab, 0, 0 ), EndMember,
  771.                                                                                         VarSpace( DEFAULT_WEIGHT ),
  772.                                                                                 EndObject, FixMinHeight,
  773.                                                                         EndMember,
  774.                                                                         VarSpace( DEFAULT_WEIGHT ),
  775.                                                                 EndObject,
  776.                                                 EndObject,
  777.                                         EndMember,
  778.                                 EndObject,
  779.                 EndObject;
  780.  
  781.                 /*
  782.                 **      Object OK?
  783.                 **/
  784.                 if ( WA_Pages ) {
  785.                         /*
  786.                         **      Connect the cycle to the page.
  787.                         **/
  788.                         AddMap( c, p, Cyc2Page );
  789.                         /*
  790.                         **      Set tab-cycling order.
  791.                         **/
  792.                         DoMethod( WA_Pages, WM_TABCYCLE_ORDER, s1, s2, s3, NULL );
  793.                         /*
  794.                         **      Add a key to the cycle object.
  795.                         **/
  796.                         GadgetKey( WA_Pages, c, "p" );
  797.                 }
  798.         }
  799.  
  800.         /*
  801.         **      Object OK?
  802.         **/
  803.         if ( WA_Pages ) {
  804.                 /*
  805.                 **      Open the window.
  806.                 **/
  807.                 if ( window = WindowOpen( WA_Pages ))
  808.                         /*
  809.                         **      Obtain signal mask.
  810.                         **/
  811.                         GetAttr( WINDOW_SigMask, WA_Pages, sigmask );
  812.         }
  813.  
  814.         return( window );
  815. }
  816.  
  817. /*
  818. **      Main entry.
  819. **/
  820. void main( int argc, char *argv[] )
  821. {
  822.         struct Window          *main = NULL, *groups = NULL, *notif = NULL, *info = NULL, *image = NULL, *bfill = NULL, *pages = NULL;
  823.         struct AppMessage      *apm;
  824.         struct WBArg           *ap;
  825.         ULONG                   mainsig = 0L, groupssig = 0L, notifsig = 0L, infosig = 0L, imagesig = 0L, bfillsig = 0L, pagessig = 0L, appsig = 0L;
  826.         ULONG                   sigmask = 0L, sigrec, rc, i;
  827.         BOOL                    running = TRUE;
  828.         UBYTE                   name[ 256 ];
  829.  
  830.         /*
  831.         **      Open the main window.
  832.         **/
  833.         if ( main = OpenMainWindow( &mainsig, &appsig )) {
  834.                 /*
  835.                 **      OR signal masks.
  836.                 **/
  837.                 sigmask |= mainsig | appsig;
  838.                 /*
  839.                 **      Loop...
  840.                 **/
  841.                 do {
  842.                         /*
  843.                         **      Wait for the signals to come.
  844.                         **/
  845.                         sigrec = Wait( sigmask );
  846.                         /*
  847.                         **      AppWindow signal?
  848.                         **/
  849.                         if ( sigrec & appsig ) {
  850.                                 /*
  851.                                 **      Obtain AppWindow messages.
  852.                                 **/
  853.                                 while ( apm = GetAppMsg( WA_Main )) {
  854.                                         /*
  855.                                         **      Get all dropped icons.
  856.                                         **/
  857.                                         for ( ap = apm->am_ArgList, i = 0; i < apm->am_NumArgs; i++, ap++ ) {
  858.                                                 /*
  859.                                                 **      Build fully qualified name.
  860.                                                 **/
  861.                                                 NameFromLock( ap->wa_Lock, name, 256 );
  862.                                                 AddPart( name, ap->wa_Name, 256 );
  863.                                                 /*
  864.                                                 **      Add it to the listview.
  865.                                                 **/
  866.                                                 AddEntry( main, LV_IconList, (APTR)name, LVAP_SORTED );
  867.                                         }
  868.                                         /*
  869.                                         **      Important! We must reply the message!
  870.                                         **/
  871.                                         ReplyMsg(( struct Message * )apm );
  872.                                 }
  873.                                 /*
  874.                                 **      Switch to the Icon page.
  875.                                 **/
  876.                                 SetGadgetAttrs(( struct Gadget * )PG_Pager, main, NULL, PAGE_Active, 1, TAG_END );
  877.                         }
  878.  
  879.                         /*
  880.                         **      Main window signal?
  881.                         **/
  882.                         if ( sigrec & mainsig ) {
  883.                                 /*
  884.                                 **      Call the main-window event handler.
  885.                                 **/
  886.                                 while (( rc = HandleEvent( WA_Main )) != WMHI_NOMORE ) {
  887.                                         switch ( rc ) {
  888.  
  889.                                                 case    WMHI_CLOSEWINDOW:
  890.                                                 case    ID_QUIT:
  891.                                                         running = FALSE;
  892.                                                         break;
  893.  
  894.                                                 case    ID_ABOUT:
  895.                                                         Req( main, "OK", "\33c\33b\33d8BGUIDemo\33n\33d2\n(C) Copyright 1993-1994 Jaba Development" );
  896.                                                         break;
  897.  
  898.                                                 case    ID_MAIN_GROUPS:
  899.                                                         /*
  900.                                                         **      Open groups window.
  901.                                                         **/
  902.                                                         if ( ! groups ) {
  903.                                                                 if ( groups = OpenGroupsWindow( &groupssig ))
  904.                                                                         sigmask |= groupssig;
  905.                                                         }
  906.                                                         break;
  907.  
  908.                                                 case    ID_MAIN_NOTIF:
  909.                                                         /*
  910.                                                         **      Open notification window.
  911.                                                         **/
  912.                                                         if ( ! notif ) {
  913.                                                                 if ( notif = OpenNotifWindow( ¬ifsig ))
  914.                                                                         sigmask |= notifsig;
  915.                                                         }
  916.                                                         break;
  917.  
  918.                                                 case    ID_MAIN_INFO:
  919.                                                         /*
  920.                                                         **      Open infoclass window.
  921.                                                         **/
  922.                                                         if ( ! info ) {
  923.                                                                 if ( info = OpenInfoWindow( &infosig ))
  924.                                                                         sigmask |= infosig;
  925.                                                         }
  926.                                                         break;
  927.  
  928.                                                 case    ID_MAIN_IMAGE:
  929.                                                         /*
  930.                                                         **      Open images window.
  931.                                                         **/
  932.                                                         if ( ! image ) {
  933.                                                                 if ( image = OpenImageWindow( &imagesig ))
  934.                                                                         sigmask |= imagesig;
  935.                                                         }
  936.                                                         break;
  937.  
  938.                                                 case    ID_MAIN_BFILL:
  939.                                                         /*
  940.                                                         **      Open backfill window.
  941.                                                         **/
  942.                                                         if ( ! bfill ) {
  943.                                                                 if ( bfill = OpenFillWindow( &bfillsig ))
  944.                                                                         sigmask |= bfillsig;
  945.                                                         }
  946.                                                         break;
  947.  
  948.                                                 case    ID_MAIN_PAGES:
  949.                                                         /*
  950.                                                         **      Open pages window.
  951.                                                         **/
  952.                                                         if ( ! pages ) {
  953.                                                                 if ( pages = OpenPagesWindow( &pagessig ))
  954.                                                                         sigmask |= pagessig;
  955.                                                         }
  956.                                                         break;
  957.  
  958.                                                 case    ID_MAIN_ICON_CONT:
  959.                                                         /*
  960.                                                         **      Switch back to the main page.
  961.                                                         **/
  962.                                                         SetGadgetAttrs(( struct Gadget * )PG_Pager, main, NULL, PAGE_Active, 0, TAG_END );
  963.                                                         /*
  964.                                                         **      Clear all entries from the listview.
  965.                                                         **/
  966.                                                         ClearList( main, LV_IconList );
  967.                                                         break;
  968.                                         }
  969.                                 }
  970.                         }
  971.  
  972.                         /*
  973.                         **      The code below will close the
  974.                         **      specific window.
  975.                         **/
  976.                         if ( sigrec & groupssig ) {
  977.                                 while (( rc = HandleEvent( WA_Groups )) != WMHI_NOMORE ) {
  978.                                         switch ( rc ) {
  979.                                                 case    WMHI_CLOSEWINDOW:
  980.                                                         WindowClose( WA_Groups );
  981.                                                         sigmask &= ~groupssig;
  982.                                                         groupssig = 0L;
  983.                                                         groups = NULL;
  984.                                                         break;
  985.                                         }
  986.                                 }
  987.                         }
  988.  
  989.                         if ( sigrec & notifsig ) {
  990.                                 while (( rc = HandleEvent( WA_Notif )) != WMHI_NOMORE ) {
  991.                                         switch ( rc ) {
  992.                                                 case    WMHI_CLOSEWINDOW:
  993.                                                         WindowClose( WA_Notif );
  994.                                                         sigmask &= ~notifsig;
  995.                                                         notifsig = 0L;
  996.                                                         notif = NULL;
  997.                                                         break;
  998.                                         }
  999.                                 }
  1000.                         }
  1001.  
  1002.                         if ( sigrec & infosig ) {
  1003.                                 while (( rc = HandleEvent( WA_Info )) != WMHI_NOMORE ) {
  1004.                                         switch ( rc ) {
  1005.                                                 case    WMHI_CLOSEWINDOW:
  1006.                                                         WindowClose( WA_Info );
  1007.                                                         sigmask &= ~infosig;
  1008.                                                         infosig = 0L;
  1009.                                                         info = NULL;
  1010.                                                         break;
  1011.                                         }
  1012.                                 }
  1013.                         }
  1014.  
  1015.                         if ( sigrec & imagesig ) {
  1016.                                 while (( rc = HandleEvent( WA_Image )) != WMHI_NOMORE ) {
  1017.                                         switch ( rc ) {
  1018.                                                 case    WMHI_CLOSEWINDOW:
  1019.                                                         WindowClose( WA_Image );
  1020.                                                         sigmask &= ~imagesig;
  1021.                                                         imagesig = 0L;
  1022.                                                         image = NULL;
  1023.                                                         break;
  1024.                                         }
  1025.                                 }
  1026.                         }
  1027.  
  1028.                         if ( sigrec & bfillsig ) {
  1029.                                 while (( rc = HandleEvent( WA_BFill )) != WMHI_NOMORE ) {
  1030.                                         switch ( rc ) {
  1031.                                                 case    WMHI_CLOSEWINDOW:
  1032.                                                         WindowClose( WA_BFill );
  1033.                                                         sigmask &= ~bfillsig;
  1034.                                                         bfillsig = 0L;
  1035.                                                         bfill = NULL;
  1036.                                                         break;
  1037.                                         }
  1038.                                 }
  1039.                         }
  1040.  
  1041.                         if ( sigrec & pagessig ) {
  1042.                                 while (( rc = HandleEvent( WA_Pages )) != WMHI_NOMORE ) {
  1043.                                         switch ( rc ) {
  1044.                                                 case    WMHI_CLOSEWINDOW:
  1045.                                                         WindowClose( WA_Pages );
  1046.                                                         sigmask &= ~pagessig;
  1047.                                                         pagessig = 0L;
  1048.                                                         pages = NULL;
  1049.                                                         break;
  1050.                                         }
  1051.                                 }
  1052.                         }
  1053.                 } while ( running );
  1054.         }
  1055.         /*
  1056.         **      Dispose of all window objects.
  1057.         **/
  1058.         if ( WA_Pages )         DisposeObject( WA_Pages );
  1059.         if ( WA_BFill )         DisposeObject( WA_BFill );
  1060.         if ( WA_Image )         DisposeObject( WA_Image );
  1061.         if ( WA_Info )          DisposeObject( WA_Info );
  1062.         if ( WA_Notif )         DisposeObject( WA_Notif );
  1063.         if ( WA_Groups )        DisposeObject( WA_Groups );
  1064.         if ( WA_Main )          DisposeObject( WA_Main );
  1065. }
  1066.  
  1067. /*
  1068. **      DICE stuff.
  1069. **/
  1070. #ifdef _DCC
  1071. int wbmain( struct WBStartup *wbs )
  1072. {
  1073.         return( main( 0, NULL ));
  1074. }
  1075. #endif
  1076.  
  1077. /*
  1078.  *      $Log: bguidemo.c,v $
  1079.  * Revision 1.12  1994/10/02  14:57:30  jaba
  1080.  * Added online-help to all windows.
  1081.  *
  1082.  * Revision 1.11  1994/09/29  20:14:37  jaba
  1083.  * Cleaned it up a little.
  1084.  *
  1085.  * Revision 1.10  1994/09/29  18:35:54  jaba
  1086.  * Enhanced the icon-drop thinggy.
  1087.  *
  1088.  * Revision 1.9  1994/08/03  11:16:20  jaba
  1089.  * Switch to proto/ instead of clib/.
  1090.  *
  1091.  * Revision 1.8  1994/07/25  20:08:47  jaba
  1092.  * Added some group seperators.
  1093.  *
  1094.  * Revision 1.7  1994/07/19  19:52:25  jaba
  1095.  * Fixed a positioning bug in the pages window.
  1096.  *
  1097.  * Revision 1.6  1994/07/18  17:44:16  jaba
  1098.  * Removed the sizing gadget from the main window.
  1099.  *
  1100.  * Revision 1.5  1994/07/16  18:21:04  jaba
  1101.  * Added the BREQF_XEN_BUTTONS flag to the BGUI_RequestA() routine.
  1102.  *
  1103.  * Revision 1.4  1994/07/16  18:04:39  jaba
  1104.  * Added a backfill pattern in the main-window.
  1105.  *
  1106.  * Revision 1.3  1994/07/16  13:16:37  jaba
  1107.  * Added a Free chip&fast display to the InfoClass window
  1108.  * to show the possibility of C-style formatting codes in
  1109.  * an InfoClass object.
  1110.  *
  1111.  * Revision 1.2  1994/07/16  12:17:38  jaba
  1112.  * Added some more XEN stuff.
  1113.  *
  1114.  * Revision 1.1  1994/07/16  11:09:12  jaba
  1115.  * Initial revision
  1116.  *
  1117.  */
  1118.